Prekreslovani nepravouhlych objektu was: pohyb formulare

Otázka od: Tomas Krysl

1. 12. 2002 11:47

Ahoj,
Volne navazu na tema prekreslovani.
Delal jsem si pred casem v FP vlastni "okenni" system, ale podarilo se mi
bezchybne rozchodit jenom prekreslovani pravouhlych objektu. I tak mi to
prislo dost slozite, kdyz ma vse fungovat tak, jak se ocekava. Navic to bylo
reseno pouze primym prekreslovanim, kdykoli se neco zmenilo a ne stavenim do
fronty a kombinaci neplatnych regionu jako ve Windows (tedy pokud tomu dobre
rozumim).

Zajima me, jestli prekreslovani nepravouhlych objektu probiha v GUI Windows
(popr. Linux aj.) v pametovem bufru nebo se treba po vodorovnych
mikroradcich zkoumaji hranice objektu (podle nadefinovanych regionu). Podle
me by melo jit oboji. A jak je resena rychlost, treba kdyz pod nepravouhlym
objektem bezi nejaka animacka nebo se prekryva vic nepravidelnych objektu?

U sveho softu jsem grafickemu driveru predaval vzdycky pole pravouhlych
vyrezu, kam smel kreslit a on to postupne projel a vykreslil kusy car nebo
ploch. U nepravouhlych objektu by se mu mel predat cely region. Orezavani
pak ale musi bejt dost slozity.

Kdyz ve Windows dojde na obsluhu WM_PAINT (popr. WM_ERASEBKGND), tak uz se
primo kresli a prikazy ValidateRect apod. pro tu samou oblast, kde se prave
kresli, nemaji smysl, je to tak?

Dik Tomas

> From: "Jiří Matějka" <matejka@stemmark.cz>
> > Neslo by to na OnPaint - pri pohybu se formular prekreslit musi... Ale
>
> Nemusi, prekleslovani se ridi necim uplne jinym nez pohybem formulare. Ten
se
> muze navic prekleslit i kdyz se s vim vubec nehybe.
>
> Petr Vones
>

Odpovedá: Erik Salaj

1. 12. 2002 22:27

> Zajima me, jestli prekreslovani nepravouhlych objektu probiha v GUI
Windows
> (popr. Linux aj.) v pametovem bufru nebo se treba po vodorovnych
> mikroradcich zkoumaji hranice objektu (podle nadefinovanych regionu).
Podle
> me by melo jit oboji. A jak je resena rychlost, treba kdyz pod
nepravouhlym
> objektem bezi nejaka animacka nebo se prekryva vic nepravidelnych objektu?
>
> U sveho softu jsem grafickemu driveru predaval vzdycky pole pravouhlych
> vyrezu, kam smel kreslit a on to postupne projel a vykreslil kusy car nebo
> ploch. U nepravouhlych objektu by se mu mel predat cely region. Orezavani
> pak ale musi bejt dost slozity.

jedna z moznosti je, ze sa vytvori bitova maska, cez ktoru sa pixely
vykresluju, to by malo byt dostatocne rychle, ale ci to je tak urobene
vo Windowse alebo v Linuxe to neviem. Inak zaujimavo je riesenie
vykreslovanie v PS2, tam posielas grafickemu procesoru popis
sceny pomocou zakladnych objektov ako bod, ciara, trojuholnik,
sprite, ... (kazdy vrchol ma 3 suradnice plus alpha blending), dalej
nastavis parametre ako antialiasing, hmla, tienovanie a GPU
zabezpeci generovanie pixelov do embedded video pameti.

Erik